//
// Created by mongobaba on 2021/6/6.
//

#include "unit_test.h"
#include "json_validator.h"

// 特殊情况
TEST(parse_escape_empty) {
    json_validator validator("");
    ASSERT_EQ(false, validator.parse_escape());
    ASSERT_EQ(std::string(""), validator.left());
}

// 正常情况，单字符
TEST(parse_escape_single_char) {
    const std::string escapes = R"("\/bfnrt)";
    for (char c : escapes) {
        std::string suffix("x");
        json_validator validator(c + suffix);
        ASSERT_EQ(true, validator.parse_escape());
        ASSERT_EQ(suffix, validator.left());
    }
}

// 正常情况，unicode
TEST(parse_escape_unicode) {
    json_validator validator("u0f1e2");
    ASSERT_EQ(true, validator.parse_escape());
    ASSERT_EQ(std::string("2"), validator.left());
}

// 异常情况，unicode字符不足4个
TEST(parse_escape_unicode_not_enough) {
    json_validator validator("u0f1");
    ASSERT_EQ(false, validator.parse_escape());
    ASSERT_EQ(std::string(""), validator.left());
}

// 异常情况，其他字符
TEST(parse_escape_other) {
    json_validator validator("x");
    ASSERT_EQ(false, validator.parse_escape());
    ASSERT_EQ(std::string("x"), validator.left());
}
